// miniprogram/pages/servicePage/service.js
// 获取app实例对象
var app = getApp();
Page({

  /**
   * 页面的初始数据
   */
  data: {
    active: 0,
    // 图片数组
    pics: null,
    // 要跳转的图片
    jump: null,
    // 监听页面是否滚动到指定区域
    position: false,
    // 服务内容在scroll-view中的top值
    sTop: 0,
    // 图文详情在scroll-view中的top值
    dTop: 0,
    // 常见问题在scroll-view中的top值
    pTop: 0,
    // 判断图片是否加载完毕
    completed: false,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: async function (options) {
    wx.showToast({
      title: '加载中',
      icon: 'loading'
    })

    // 调取云数据库中的商品信息
    const db = wx.cloud.database();
    var that = this;
    await db.collection('services').doc(`${options.category + options.id}`).get().then(res => {
      that.setData({
        goodsInfo: res.data
      })
    })

    let fileList = [];
    this.data.goodsInfo.serviceImg.forEach((item) => {
      fileList.push({
        fileID: `cloud://development-cid1.6465-development-cid1-1304166209/services/${options.category}/id/${options.id}/${item}`,
        maxAge: 60 * 60 // one hour
      })
    })
    // 请求页面图片
    var tempPathArr = await wx.cloud.getTempFileURL({
      fileList: fileList
    }).then(res => {
      var pathArr = [];
      res.fileList.forEach(item => {
        pathArr.push(item.tempFileURL);
      })
      return pathArr;
    }).catch(() => {
      wx.showToast({
        title: '获取商品图片失败',
        icon: 'none',
        duration: 2000
      })
      return new Error("获取商品图片失败");
    })

    var pics = [];
    var bannerPath;
    tempPathArr.forEach((item, index, arr) => {
      if (index === 0) {
        bannerPath = item
      } else {
        if (index === 1) {
          pics.push({
            src: item,
            id: "serviceContent"
          })
        } else if (index === 2) {
          pics.push({
            src: item,
            id: "details"
          })
        } else if (index === arr.length - 3) {
          pics.push({
            src: item,
            id: "problem"
          })
        } else {
          pics.push({
            src: item,
            id: ""
          })
        }
      }
    })


    this.setData({
      pics: pics,
      // 商品图
      bannerPath: bannerPath
    })
    setTimeout(() => {
      this.setData({
        completed: true
      })
      wx.hideToast();

    }, 500);
  },
  // 检测图片是否加载完成
  imgItemLoad(){
    this.count();
  },
  // 检测元素离页面顶端距离等信息
  count: async function () {
    let query = wx.createSelectorQuery();
    var info;

    function computed(selector) {
      query.select(selector).boundingClientRect();
    }
    computed('.pics');
    computed('#serviceContent');
    computed("#details");
    computed("#problem");

    await new Promise((resolve, reject) => {
      query.exec(ElementInfo => {
        info = ElementInfo;
        resolve();
      })
    })
    if (!info || (info[1].top === info[2].top) || (info[2].top === info[3].top)) {
      // 防止某一项还未读取到就赋值，出现tab栏闪跳的状况
      this.count();
      return;
    }
    // scroll-view组件离顶端的距离
    var viewTop = info[0].top;
    // serviceContent离顶端的距离
    var serviceContent = info[1].top;
    // details离顶端的距离
    var details = info[2].top;
    // problem离顶端的距离
    var problem = info[3].top;

    this.setData({
      sTop: parseInt(serviceContent - viewTop),
      // 2为容错率
      dTop: parseInt(details - viewTop),
      pTop: parseInt(problem - viewTop)
    })
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: async function () {
    this.setData({
      cityName: app.globalData.cityName
    })
  },
  // 改变当前title样式
  changeActive: function (e) {
    // 判断位置是否到了指定区域
    if (this.data.position) {
      this.setData({
        active: e.currentTarget.dataset.id,
      })
      switch (e.currentTarget.dataset.id) {
        case 0:
          this.setData({
            jump: "serviceContent"
          })
          break;
        case 1:
          this.setData({
            jump: "details"
          })
          break;
        case 2:
          this.setData({
            jump: "problem"
          })
          break;
      }
    } else {
      return;
    }

  },
  // 监听滚动事件
  scrollHandle: function (e) {
    if (e.detail.scrollTop >= this.data.sTop && e.detail.scrollTop < this.data.dTop - 15) {
      this.setData({
        active: 0
      })
    } else if (e.detail.scrollTop >= this.data.dTop && e.detail.scrollTop < this.data.pTop - 15) {
      this.setData({
        active: 1
      })
    } else if (e.detail.scrollTop >= this.data.pTop) {
      this.setData({
        active: 2
      })
    }
  },
  onPageScroll: function (e) {
    if (e.scrollTop >= 415) {
      this.setData({
        position: true
      })
    } else {
      this.setData({
        position: false
      })
    }
  },
  // 判断用户是否登录
  isLogin: function () {
    if (app.globalData.login) {
      wx.navigateTo({
        url: `./submitOrder/submitOrder?_id=${this.data.goodsInfo._id}`
      })
    } else {
      wx.showToast({
        title: '请先登录再进行购买',
        icon: 'none',
        duration: 2000
      })
    }
  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {},

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})